//CODEVS
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>

using namespace std;

const int maxn=300005;
const double pi=acos(-1.0);
struct complex{
    double r,i;
    complex(double r=0,double i=0):r(r),i(i){}
    const complex operator + (const complex &c) const{ return complex(r+c.r,i+c.i);}
    const complex operator - (const complex &c) const{ return complex(r-c.r,i-c.i);}
    const complex operator * (const complex &c) const{ return complex(r*c.r-i*c.i,r*c.i+i*c.r);}
};

complex a[maxn],b[maxn];
char sa[maxn],sb[maxn];
int rev[maxn];
int l;
bool vis[maxn];
void bitrev(){
    int lg=0;
    rev[0]=0;
    for(int i=1;i<l;i++){
        if((i&(i-1))==0) lg=lg?lg<<1:1;
        rev[i]=rev[i^lg]|((l/lg)>>1);
    }
}
void fft(complex *a,double on){
    bitrev();
    for(int i=0;i<l;i++) if(i<rev[i]) swap(a[i],a[rev[i]]);
    for(int h=2;h<=l;h<<=1){
        complex wn=complex(cos(2*pi*on/h),sin(2*pi*on/h));
        for(int j=0;j<l;j+=h){
            complex w=complex(1,0);
            for(int k=j;k<j+h/2;k++){
                complex x=a[k];
                complex y=w*a[k+h/2];
                a[k]=x+y;
                a[k+h/2]=x-y;
                w=w*wn;
            }
        }
    }
    if(on==-1) for(int i=0;i<l;i++) a[i].r/=l;
}

int sum[maxn];

int main(){
    scanf("%s%s",sa,sb);
    int la=strlen(sa);
    int lb=strlen(sb);
    l=1;
    while(l<=la+lb) l<<=1;
    memset(a,0,sizeof a);
    memset(b,0,sizeof b);
    for(int i=0;i<la;i++) a[i].r=sa[la-i-1]-'0';
    for(int i=0;i<lb;i++) b[i].r=sb[lb-i-1]-'0';
    fft(a,1);
    fft(b,1);
    for(int i=0;i<l;i++) a[i]=a[i]*b[i];
    fft(a,-1);
    for(int i=0;i<l;i++) sum[i]=int(a[i].r+0.5);
    for(int i=0;i<l;i++) if(sum[i]>9) {sum[i+1]+=sum[i]/10;sum[i]%=10;}
    for(int i=l;sum[i]>9;i++) {sum[i+1]+=sum[i]/10;sum[i]%=10;l++;}
    while(l>0&&sum[l]==0) l--;
    for(;l>=0;l--) putchar(sum[l]+'0');
    putchar('\n');
    return 0;
}

